package com.sitech.common;

import com.sitech.common.utils.StringUtils;
import com.sitech.jcfx.dt.DataBus;
import com.sitech.jcfx.dt.MBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 跨域实体类，即不在本地持久化的对象
 * 
 */
public class CrossEntity extends BusiEntity
{
	private static final Logger log = LoggerFactory.getLogger(CrossEntity.class);

	private static final String EntityId = "0002";

	/**
	 * @Description: 调用服务，处理异常及判断返回结果
	 * @author: zhangzza
	 * @createTime: 2014年8月25日 下午1:57:56
	 * 
	 * @param
	 * @return 返回出参BODY.OUT_DATA节点信息
	 */
	public static Map callService(String interfaceName, MBean mBean)
	{
		return callService(interfaceName, mBean, HashMap.class);
	}

	/**
	 * @Description: 调用服务，处理异常及判断返回结果
	 * @author: zhangzza
	 * @createTime: 2014年8月25日 下午1:57:56
	 * 
	 * @param interfaceName 服务名
	 * @param json 服务入参（JSON字符串）
	 * @return 返回出参BODY.OUT_DATA节点信息（节点类型为HashMap）
	 */
	public static Map callService(String interfaceName, String json)
	{
		return callService(interfaceName, json, HashMap.class);
	}

	/**
	 * @Description: 调用服务，处理异常及判断返回结果
	 * @author: zhangzza
	 * @createTime: 2014年8月25日 下午1:57:56
	 * 
	 * @param
	 * @return 返回出参BODY.OUT_DATA节点信息
	 * 修改轨迹
	 * 修改服务出入参打印日志 2017/2/21 11:02:42 haoxz 
	 */
	public static <T> T callService(String interfaceName, MBean mBean, Class<T> clazz)
	{
		
		MBean busBean =null;
		// HEADER透传
		if (DataBus.getMBean() != null)
		{
			busBean = (MBean) DataBus.getMBean();
			mBean.setHeader(busBean.getHeader());
		}

		log.info("服务：" + interfaceName+"的入参："+ StringUtils.convertEmptyWhenNull(mBean) );

		String outStr = null;
//		
		
		return (T) mBean;
	}
	
	/**
	 * @Description: 用于后台定时任务callService
	 * @author: liudw
	 * @createTime: 2014年8月25日 下午1:57:56
	 * 
	 * @param
	 * @return 返回出参BODY.OUT_DATA节点信息
	 */
	public static <T> T callServiceCrontab(String interfaceName, MBean mBean, Class<T> clazz)
	{
		
		log.info("服务：" + interfaceName+"的入参："+ StringUtils.convertEmptyWhenNull(mBean) );

		String outStr = null;
		
		
		return (T) mBean;
	}

	/**
	 * @Description: 调用服务，处理异常及判断返回结果
	 * @author: zhangzza
	 * @createTime: 2014年8月25日 下午1:57:56
	 * 
	 * @param
	 * @return 返回出参BODY.OUT_DATA节点信息
	 */
	public static <T> T callService(String interfaceName, String json, Class<T> clazz)
	{
		MBean mBean = new MBean(json);

		return callService(interfaceName, mBean, clazz);
	}

	/**
	 * @Description: 获取错误编码---私有方法
	 * @author: zhangzza
	 * @version:
	 * @createTime: 2014年12月8日 上午10:40:38
	 * 
	 * @param
	 * @return String
	 */

	private static String getErrorCode(String seq)
	{
		return "String";
	}
	
	/**
	 * 
	 * @Description: 调用服务，处理异常及判断返回结果  调用服务时增加路由值，以便连接另外一个库
	 * @author: songhui
	 * @version:    
	 * @createTime: 2015年9月7日 下午2:54:32
	 * 
	 * @param 
	 * @return Map
	 */
	public static Map callService(String interfaceName, MBean mBean,String routeKey,String routeValue )
	{
		return callService(interfaceName, mBean, routeKey,routeValue,HashMap.class);
	}

	
	/**
	 * 
	 * @Description:  调用服务时增加路由值，以便连接另外一个库
	 * @author: songhui
	 * @version:    
	 * @createTime: 2015年9月7日 下午3:35:32
	 * 
	 * @param 
	 * @return T
	 */
	public static <T> T callService(String interfaceName, MBean mBean, String routeKey,String routeValue,Class<T> clazz)
	{
		// HEADER透传
		return (T) mBean;
	}
	
	
}
